home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / gsdbloo.exe / GS_KEYI.PAS < prev    next >
Pascal/Delphi Source File  |  1992-02-24  |  21KB  |  460 lines

  1. unit GS_KeyI;
  2. {-----------------------------------------------------------------------------
  3.                            Keyboard Input Routines
  4.  
  5.        GS_KeyI Copyright (c)  Richard F. Griffin
  6.  
  7.         9 April 1990
  8.  
  9.        102 Molded Stone Pl
  10.        Warner Robins, GA  31088
  11.  
  12.        -------------------------------------------------------------
  13.        This unit handles the objects for all keyboard data entry
  14.        operations.
  15.  
  16.    Changes:
  17.  
  18.       02 Jun 91 - Made EditString a virtual method.
  19.  
  20.       20 Feb 92 - Added Done destructor for consistency to ensure a
  21.                   Done destructor exists for dynamic deallocation.
  22.  
  23.                   Added GSP_KeyI_Object as a pointer for dynamic
  24.                   allocation.
  25. ------------------------------------------------------------------------------}
  26.  
  27. interface
  28. {$D-}
  29.  
  30. uses
  31.    CRT, DOS, GS_Scrn;
  32.  
  33. const
  34.    BeepTime = 200;
  35.    BeepFreq = 600;
  36.  
  37.    Kbd_Null = #0;                     {Null Character}
  38.    Kbd_Nul  = #3;                     {Another Null}
  39.    Kbd_Bsp  = #8;                     {Backspace}
  40.    Kbd_Tab  = #9;                     {Tab}
  41.    Kbd_Ret  = #13;                    {Return}
  42.    Kbd_RTb  = #15;                    {Shift-Tab}
  43.    Kbd_AlQ  = #16;                    {Alt-Q}
  44.    Kbd_AlW  = #17;                    {Alt-W}
  45.    Kbd_AlE  = #18;                    {Alt-E}
  46.    Kbd_AlR  = #19;                    {Alt-R}
  47.    Kbd_AlT  = #20;                    {Alt-T}
  48.    Kbd_AlY  = #21;                    {Alt-Y}
  49.    Kbd_AlU  = #22;                    {Alt-U}
  50.    Kbd_AlI  = #23;                    {Alt-I}
  51.    Kbd_AlO  = #24;                    {Alt-O}
  52.    Kbd_AlP  = #25;                    {Alt-P}
  53.    Kbd_Esc  = #27;                    {Escape}
  54.    Kbd_AlA  = #30;                    {Alt-A}
  55.    Kbd_AlS  = #31;                    {Alt-S}
  56.    Kbd_AlD  = #32;                    {Alt-D}
  57.    Kbd_AlF  = #33;                    {Alt-F}
  58.    Kbd_AlG  = #34;                    {Alt-G}
  59.    Kbd_AlH  = #35;                    {Alt-H}
  60.    Kbd_AlJ  = #36;                    {Alt-J}
  61.    Kbd_AlK  = #37;                    {Alt-K}
  62.    Kbd_AlL  = #38;                    {Alt-L}
  63.    Kbd_AlZ  = #44;                    {Alt-Z}
  64.    Kbd_AlX  = #45;                    {Alt-X}
  65.    Kbd_AlC  = #46;                    {Alt-C}
  66.    Kbd_AlV  = #47;                    {Alt-V}
  67.    Kbd_AlB  = #48;                    {Alt-B}
  68.    Kbd_AlN  = #49;                    {Alt-N}
  69.    Kbd_AlM  = #50;                    {Alt-M}
  70.    Kbd_F1   = #59;                    {F1}
  71.    Kbd_F2   = #60;                    {F2}
  72.    Kbd_F3   = #61;                    {F3}
  73.    Kbd_F4   = #62;                    {F4}
  74.    Kbd_F5   = #63;                    {F5}
  75.    Kbd_F6   = #64;                    {F6}
  76.    Kbd_F7   = #65;                    {F7}
  77.    Kbd_F8   = #66;                    {F8}
  78.    Kbd_F9   = #67;                    {F9}
  79.    Kbd_F10  = #68;                    {F10}
  80.    Kbd_Home = #71;                    {Home}
  81.    Kbd_UpAr = #72;                    {Up Arrow}
  82.    Kbd_PgUp = #73;                    {Page Up}
  83.    Kbd_LfAr = #75;                    {Left Arrow}
  84.    Kbd_RtAr = #77;                    {Right Arrow}
  85.    Kbd_End  = #79;                    {End}
  86.    Kbd_DnAr = #80;                    {Down Arrow}
  87.    Kbd_PgDn = #81;                    {Page Down}
  88.    Kbd_Ins  = #82;                    {Insert}
  89.    Kbd_Del  = #83;                    {Delete}
  90.    Kbd_F11  = #84;                    {Shift-F1}
  91.    Kbd_F12  = #85;                    {Shift-F2}
  92.    Kbd_F13  = #86;                    {Shift-F3}
  93.    Kbd_F14  = #87;                    {Shift-F4}
  94.    Kbd_F15  = #88;                    {Shift-F5}
  95.    Kbd_F16  = #89;                    {Shift-F6}
  96.    Kbd_F17  = #90;                    {Shift-F7}
  97.    Kbd_F18  = #91;                    {Shift-F8}
  98.    Kbd_F19  = #92;                    {Shift-F9}
  99.    Kbd_F20  = #93;                    {Shift-F10}
  100.    Kbd_F21  = #94;                    {Ctrl-F1}
  101.    Kbd_F22  = #95;                    {Ctrl-F2}
  102.    Kbd_F23  = #96;                    {Ctrl-F3}
  103.    Kbd_F24  = #97;                    {Ctrl-F4}
  104.    Kbd_F25  = #98;                    {Ctrl-F5}
  105.    Kbd_F26  = #99;                    {Ctrl-F6}
  106.    Kbd_F27  = #100;                   {Ctrl-F7}
  107.    Kbd_F28  = #101;                   {Ctrl-F8}
  108.    Kbd_F29  = #102;                   {Ctrl-F9}
  109.    Kbd_F30  = #103;                   {Ctrl-F10}
  110.    Kbd_F31  = #104;                   {Alt-F1}
  111.    Kbd_F32  = #105;                   {Alt-F2}
  112.    Kbd_F33  = #106;                   {Alt-F3}
  113.    Kbd_F34  = #107;                   {Alt-F4}
  114.    Kbd_F35  = #108;                   {Alt-F5}
  115.    Kbd_F36  = #109;                   {Alt-F6}
  116.    Kbd_F37  = #110;                   {Alt-F7}
  117.    Kbd_F38  = #111;                   {Alt-F8}
  118.    Kbd_F39  = #112;                   {Alt-F9}
  119.    Kbd_F40  = #113;                   {Alt-F10}
  120.    Kbd_CPSc = #114;                   {Ctrl-PrtSc}
  121.    Kbd_CLAr = #115;                   {Ctrl-Left Arrow}
  122.    Kbd_CRAr = #116;                   {Ctrl-Right Arrow}
  123.    Kbd_CEnd = #117;                   {Ctrl-End}
  124.    Kbd_CPDn = #118;                   {Ctrl-Page Down}
  125.    Kbd_CHom = #119;                   {Ctrl-Home}
  126.    Kbd_Al1  = #120;                   {Alt-1}
  127.    Kbd_Al2  = #121;                   {Alt-2}
  128.    Kbd_Al3  = #122;                   {Alt-3}
  129.    Kbd_Al4  = #123;                   {Alt-4}
  130.    Kbd_Al5  = #124;                   {Alt-5}
  131.    Kbd_Al6  = #125;                   {Alt-6}
  132.    Kbd_Al7  = #126;                   {Alt-7}
  133.    Kbd_Al8  = #127;                   {Alt-8}
  134.    Kbd_Al9  = #128;                   {Alt-9}
  135.    Kbd_Al0  = #129;                   {Alt-0}
  136.    Kbd_AlHy = #130;                   {Alt-Hyphen}
  137.    Kbd_AlEq = #131;                   {Alt-Equal}
  138.    Kbd_CPUp = #132;                   {Ctrl-Page up}
  139.  
  140. type
  141.  
  142. {
  143.          ┌──────────────────────────────────────────────────────────┐
  144.          │  ********   Object for Keyboard Entry Action   *******   │
  145.          │                                                          │
  146.          │  This object type describes the structure for any child  │
  147.          │  so that the child object can use a virtual method to    │
  148.          │  handle processing of function keys.                     │
  149.          └──────────────────────────────────────────────────────────┘
  150. }
  151.  
  152.    GSP_KeyI_Objt = ^GS_KeyI_Objt;
  153.    GS_KeyI_Objt =  Object
  154.                       CPos        : Word;
  155.                                       {Holds the position within the string}
  156.                       Ch          : Char;
  157.                                       {Holds the last character read}
  158.                       First       : boolean;
  159.                                       {Flag to detect the first real character}
  160.                                       {entered from the keyboard}
  161.                       Modified    : boolean;
  162.                                       {Flag to signal whether the field was}
  163.                                       {mofified, or the default was returned}
  164.                       Wait_CR     : boolean;
  165.                                       {Flag to wait for Carriage Return before}
  166.                                       {exit.  If false, will exit when the}
  167.                                       {field is full}
  168.  
  169.                       constructor Init;
  170.                       destructor  Done;
  171.                       function    EditString(T : string; x, y, l : integer)
  172.                                             : string; virtual;
  173.                       procedure Check_Func_Keys; virtual;
  174.                                       {Note this method is virtual, so it may}
  175.                                       {be replaced by any child method for its}
  176.                                       {own processing of function key actions}
  177.                    end;
  178.  
  179.  
  180. var
  181.    GS_KeyI_Esc,
  182.    GS_KeyI_Fuc,
  183.    GS_KeyI_Ins,
  184.    GS_KeyI_Ret   : boolean;
  185.    GS_KeyI_Chr   : char;
  186.    GS_KeyI_Str   : string[255];
  187.  
  188. Function GS_KeyI_GetKey : char;       {Any program can call this to read a}
  189.                                       {character and test for function keys}
  190.